Ext.ns('Clientes');
Ext.ns('Movimientos');
Ext.ns('Contratos');
Ext.ns('Colonias');
/*
 * Crea forma para el ingreso de clientes naturales
 */

Clientes.tbDatosNatural = Ext.extend(Ext.TabPanel, {
	defaults : {
		autoHeight : true,
		bodyStyle : 'padding:10px',
		width : 400
	},
	tipo : 'Agregar',
	url : '/cake/syscable/MgClientes/insertarExt',
	padre : 'vtnDatosNaturalCliente',
	initComponent : function() {
		var config = {
			items : [{
				title : 'Datos Generales',
				layout : 'form',
				shadow : true,
				defaults : {
					width : 300
				},
				tabTip : 'Datos generales del cliente',
				items : [{
					xtype : 'textfield',
					id : 'txIdCliente',
					fieldLabel : 'Identidad',
					name : 'data[MgCliente][identidad]',
					allowBlank : false,
					blankText : 'No puede estar vacio',
					plugins : [new Ext.ux.InputTextMask('9999-9999-99999', true)]
				}, {
					xtype : 'textfield',
					fieldLabel : 'Primer Nombre',
					id : 'tfPrimerNombreCliente',
					name : 'data[MgCliente][primer_nombre]',
					allowBlank : false,
					blankText : 'No puede estar vacio'
				}, {
					xtype : 'textfield',
					id : 'tfSegundoNombreCliente',
					fieldLabel : 'Segundo Nombre',
					name : 'data[MgCliente][segundo_nombre]',
					allowBlank : true
				}, {
					xtype : 'textfield',
					id : 'tfPrimerApellidoCliente',
					fieldLabel : 'Primer Apellido',
					name : 'data[MgCliente][primer_apellido]',
					allowBlank : false,
					blankText : 'No puede estar vacio'
				}, {
					xtype : 'textfield',
					id : 'tfSegundoApellidoCliente',
					fieldLabel : 'Segundo Apellido',
					name : 'data[MgCliente][segundo_apellido]',
					allowBlank : true
				}, {
					xtype : 'datefield',
					fieldLabel : 'Fecha de Nacimiento',
					labelWidth : 110,
					id : 'dfFechaNacimientoCliente',
					name : 'data[MgCliente][fecha_nacimiento]',
					width : 190,
					allowBlank : true,
					format : 'd-m-Y',
					todayText : 'Hoy'
				}, {
					xtype : 'textfield',
					id : 'tfIdTipoCliente',
					name : 'data[MgCliente][mg_tipo_cliente_id]',
					value : 1,
					hidden : true
				}],
				buttons : [{
							iconCls : 'icon-right',
							scale : 'large',
							width : 32,
							height : 32,
							scope : this,
							handler : function() {
								Ext.getCmp(this.id).setActiveTab(1);
							}
						}]
			}, {
				title : 'Contacto',
				layout : 'form',
				tabTip : 'Datos de contacto del Cliente(direccion, telefonos, referencia)',
				defaults : {
					width : 300
				},
				items : [{
							xtype : 'textfield',
							fieldLabel : 'Celular',
							id : 'tfCelularCliente',
							name : 'data[MgCliente][telefono_celular]',
							allowBlank : true,
							blankText : 'No puede estar vacio'
						}, {
							xtype : 'textfield',
							id : 'tfTelefonoResidenciaCliente',
							fieldLabel : 'Telefono Residencia',
							name : 'data[MgCliente][telefono_residencia]',
							allowBlank : true,
							blankText : 'No puede estar vacio'

						}, {
							xtype : 'textfield',
							id : 'tfTelefonoOficinaCliente',
							fieldLabel : 'Telefono Oficina',
							name : 'data[MgCliente][telefono_oficina]',
							allowBlank : true,
							blankText : 'No puede estar vacio'
						}, {
							xtype : 'textfield',
							id : 'tfTelefonoOtroCliente',
							fieldLabel : 'Telefono Otro',
							name : 'data[MgCliente][telefono_otro]',
							allowBlank : true,
							blankText : 'No puede estar vacio'
						}, {
							xtype : 'textfield',
							id : 'tfCorreoElectronicoCliente',
							fieldLabel : 'Correo Electronico',
							name : 'data[MgCliente][correo_electronico]',
							allowBlank : true,
							blankText : 'No puede estar vacio'
						}, {
							xtype : 'textarea',
							id : 'taReferenciaCliente',
							fieldLabel : 'Referencia',
							name : 'data[MgCliente][referencia]',
							allowBlank : true,
							blankText : 'No puede estar vacio',
							height : 90
						}],
				buttons : [{
							iconCls : 'icon-left',
							scale : 'large',
							width : 32,
							height : 32,
							cls : 'boton_align_left',
							scope : this,
							handler : function() {
								Ext.getCmp(this.id).setActiveTab(0);

							}
						}, {
							text : 'Guardar',
							type : 'submit',
							scope : this,
							handler : function() {
								Ext.getCmp('frmDatosNaturalCliente').form
										.submit({
											timeout : 350,
											waitMsg : 'Porfavor Espere',
											waitTitle : 'Guardando Datos',
											url : this.url,
											scope : this,
											success : function(form, action) {
												Ext.Msg.show({
													title : 'Mensaje',
													msg : 'Cliente Guardado Exitosamente!',
													buttons : Ext.Msg.OK,
													scope : this,
													fn : function() {
														alert(this.tipo);
														if (this.tipo == 'Agregar') {
															Ext
																	.getCmp(this.padre)
																	.close();
															var vtnContrato = new Contratos.vtnDatos(
																	{
																		id : 'vtnDatosAgregarContrato',
																		tipo : 'Agregar',
																		url : '/cake/syscable/TcContratos/insertarExt'
																	});
															vtnContrato.show()
															Ext
																	.getCmp('tfDescripcionContrato')
																	.setValue(action.result.nombre_cliente);
															Ext
																	.getCmp('cbxListadoCliente')
																	.setValue(action.result.clienteid)
														}
													}
												});
											},
											failure : function() {
												Ext.MessageBox.alert('Mensaje',
														'Error al Guardar!');
											}
										});
							}
						}, {
							text : 'Cancelar',
							scope : this,
							handler : function() {
								Ext.getCmp(this.padre).close();
							}
						}]
			}]
		};
		Ext.apply(this, Ext.apply(this.initialConfig, config));
		Clientes.tbDatosNatural.superclass.initComponent.apply(this, arguments);
	}
});
Ext.reg('tbDatosNaturalCliente', Clientes.tbDatosNatural);

Clientes.frmDatosNatural = Ext.extend(Ext.form.FormPanel, {
			frame : false,
			bodyStyle : 'padding: 5px 5px 0',
			width : 550,
			labelWidth : 125,
			labelAlign : 'right',
			defaultType : 'textfield',
			tipo : 'Agregar',
			padre : 'vtnDatosNaturalCliente',
			url : '/cake/syscable/MgClientes/insertarExt',
			initComponent : function() {
				var config = {
					trackResetOnLoad : true,
					items : [{
								xtype : 'tbDatosNaturalCliente',
								id : 'tbDatosNaturalCliente',
								tipo : this.tipo,
								padre : this.padre,
								url : this.url
							}]
				};
				Ext.apply(this, Ext.apply(this.initialConfig, config));
				Clientes.frmDatosNatural.superclass.initComponent.apply(this,
						arguments);
			}
		});
Ext.reg('frmDatosNaturalCliente', Clientes.frmDatosNatural);
/*
 * Crea forma para el ingreso de clientes juridicos
 */

Clientes.tbDatosJuridico = Ext.extend(Ext.TabPanel, {
	defaults : {
		autoHeight : true,
		bodyStyle : 'padding:10px',
		width : 400
	},
	tipo : 'Agregar',
	url : '/cake/syscable/MgClientes/insertarExt',
	padre : 'vtnDatosNaturalCliente',
	initComponent : function() {
		var config = {
			items : [{
				title : 'Datos Generales',
				layout : 'form',
				shadow : true,
				defaults : {
					width : 300
				},
				tabTip : 'Datos Generales del Cliente',
				items : [{
					xtype : 'textfield',
					id : 'tfIdentidadJuridicoCliente',
					fieldLabel : 'Identidad',
					name : 'data[MgCliente][identidad]',
					allowBlank : false,
					blankText : 'No puede estar vacio',
					plugins : [new Ext.ux.InputTextMask('9999-9999-99999', true)]
				}, {
					xtype : 'datefield',
					id : 'dfFechaConstitucionJuridicoCliente',
					fieldLabel : 'Fecha Constitucion',
					labelWidth : 110,
					name : 'data[MgCliente][fecha_nacimiento]',
					width : 190,
					allowBlank : true,
					format : 'd-m-Y',
					todayText : 'Hoy'
				}, {
					xtype : 'textfield',
					id : 'tfNombreComercialJuridicoCliente',
					fieldLabel : 'Nombre Comercial',
					name : 'data[MgCliente][nombre_comercial]',
					allowBlank : false,
					blankText : 'No puede estar vacio'
				}, {
					xtype : 'fieldset',
					id : 'fsDatosRepLegalJuridicoCliente',
					title : 'Datos Representante Legal',
					layout : 'form',
					anchor : '100%',
					defaults : {
						bodyStyle : 'padding:10px',
						width : 290,
						height : 22
					},
					items : [{
						xtype : 'textfield',
						fieldLabel : 'Primer Nombre',
						id : 'tfPrimerNombreRepLegal',
						name : 'data[MgCliente][primer_nombre_representante_legal]',
						allowBlank : false,
						blankText : 'No puede estar vacio'
					}, {
						xtype : 'textfield',
						fieldLabel : 'Segundo Nombre',
						id : 'tfSegundoNombreRepLegal',
						name : 'data[MgCliente][segundo_nombre_representante_legal]',
						allowBlank : true
					}, {
						xtype : 'textfield',
						fieldLabel : 'Primer Apellido',
						id : 'tfPrimerApellidoRepLegal',
						name : 'data[MgCliente][primer_apellid_representante_legalo]',
						allowBlank : false,
						blankText : 'No puede estar vacio'
					}, {
						xtype : 'textfield',
						id : 'tfSegundoApellidoRepLegal',
						fieldLabel : 'Segundo Apellido',
						name : 'data[MgCliente][segundo_apellido_representante_legal]',
						allowBlank : true
					}]
				}, {
					xtype : 'textfield',
					name : 'data[MgCliente][mg_tipo_cliente_id]',
					id : 'tfIdTipoCliente',
					value : 2,
					hidden : true
				}],
				buttons : [{
							iconCls : 'icon-right',
							scale : 'large',
							width : 32,
							height : 32,
							scope : this,
							handler : function() {
								Ext.getCmp(this.id).setActiveTab(1);

							}
						}]
			}, {
				title : 'Contacto',
				layout : 'form',
				tabTip : 'Datos de contacto del Cliente(direccion, telefonos, referencia)',
				defaults : {
					width : 300
				},
				items : [{
							xtype : 'textfield',
							fieldLabel : 'Celular',
							id : 'tfCelularJuridicoCliente',
							name : 'data[MgCliente][telefono_celular]',
							allowBlank : true,
							blankText : 'No puede estar vacio'
						}, {
							xtype : 'textfield',
							fieldLabel : 'Telefono Residencia',
							id : 'tfTelefonoResidenciaJuridicoCliente',
							name : 'data[MgCliente][telefono_residencia]',
							allowBlank : true,
							blankText : 'No puede estar vacio'
						}, {
							xtype : 'textfield',
							fieldLabel : 'Telefono Oficina',
							name : 'data[MgCliente][telefono_oficina]',
							id : 'tfTelefonoOficinaJuridicoCliente',
							allowBlank : true,
							blankText : 'No puede estar vacio'
						}, {
							xtype : 'textfield',
							fieldLabel : 'Telefono Otro',
							id : 'tfTelefonoOtroJuridicoCliente',
							name : 'data[MgCliente][telefono_otro]',
							allowBlank : true,
							blankText : 'No puede estar vacio'
						}, {
							xtype : 'textfield',
							fieldLabel : 'Correo Electronico',
							id : 'tfCorreoElectronicoJuridicoCliente',
							name : 'data[MgCliente][correo_electronico]',
							allowBlank : true,
							blankText : 'No puede estar vacio'
						}, {
							xtype : 'textarea',
							id : 'taReferenciaJurificoCliente',
							fieldLabel : 'Referencia',
							name : 'data[MgCliente][referencia]',
							allowBlank : true,
							blankText : 'No puede estar vacio',
							height : 90
						}],
				buttons : [{
							iconCls : 'icon-left',
							scale : 'large',
							width : 32,
							height : 32,
							cls : 'boton_align_left',
							scope : this,
							handler : function() {
								Ext.getCmp(this.id).setActiveTab(0);

							}
						}, {
							text : 'Guardar',
							type : 'submit',
							scope : this,
							handler : function() {
								Ext.getCmp('frmDatosJuridicoCliente').form
										.submit({
											timeout : 350,
											waitMsg : 'Porfavor Espere',
											waitTitle : 'Guardando Datos',
											url : this.url,
											scope : this,
											success : function(form, action) {
												Ext.Msg.show({
													title : 'Mensaje',
													msg : 'Cliente Guardado Exitosamente!',
													buttons : Ext.Msg.OK,
													scope : this,
													fn : function() {
														alert(this.tipo);
														if (this.tipo == 'Agregar') {
															Ext
																	.getCmp(this.padre)
																	.close();
															var vtnContrato = new Contratos.vtnDatos(
																	{
																		id : 'vtnDatosAgregarContrato',
																		tipo : 'Agregar',
																		url : '/cake/syscable/TcContratos/insertarExt'
																	});
															vtnContrato.show()
															Ext
																	.getCmp('tfDescripcionContrato')
																	.setValue(action.result.nombre_cliente);
															Ext
																	.getCmp('cbxListadoCliente')
																	.setValue(action.result.clienteid)
														}
													}
												});
											},
											failure : function() {
												Ext.MessageBox.alert('Mensaje',
														'Error al Guardar!');
											}
										});
							}
						}, {
							text : 'Cancelar',
							handler : function() {
								Ext.getCmp(this.padre).hide(this);
							}
						}]
			}]
		};
		Ext.apply(this, Ext.apply(this.initialConfig, config));
		Clientes.tbDatosJuridico.superclass.initComponent
				.apply(this, arguments);

	}
});
Ext.reg('tbDatosJuridicoCliente', Clientes.tbDatosJuridico);

Clientes.frmDatosJuridico = Ext.extend(Ext.form.FormPanel, {
			frame : false,
			bodyStyle : 'padding: 5px 5px 0',
			width : 550,
			labelWidth : 125,
			labelAlign : 'right',
			defaultType : 'textfield',
			tipo : 'Agregar',
			padre : 'vtnDatosJuridicoCliente',
			url : '/cake/syscable/MgClientes/insertarExt',
			initComponent : function() {
				var config = {
					trackResetOnLoad : true,
					items : [{
								xtype : 'tbDatosJuridicoCliente',
								id : 'tbDatosJuridicoCliente',
								tipo : this.tipo,
								padre : this.padre,
								url : this.url
							}]
				};
				Ext.apply(this, Ext.apply(this.initialConfig, config));
				Clientes.frmDatosJuridico.superclass.initComponent.apply(this,
						arguments);
			}
		});
Ext.reg('frmDatosJuridicoCliente', Clientes.frmDatosJuridico);

Clientes.vtnDatosJuridico = Ext.extend(Ext.Window, {
			id : 'vtnDatosJuridicoCliente',
			width : 550,
			height : 365,
			tipo : 'Agregar',
			title : 'Insertar Cliente Juridico',
			url : '/cake/syscable/MgClientes/insertarJuridicoExt',
			initComponent : function() {
				var config = {
					layout : 'border',
					closable : true,
					closeAction : 'close',
					plain : false,
					maximizable : false,
					resizable : false,
					frame : true,
					items : [{
								region : 'center',
								width : 200,
								layout : 'fit',
								frame : false,
								border : false,
								items : [{
											xtype : 'frmDatosJuridicoCliente',
											id : 'frmDatosJuridicoCliente',
											tipo : this.tipo,
											padre : this.id,
											url : this.url
										}]
							}]
				};
				Ext.apply(this, Ext.apply(this.initialConfig, config));
				Clientes.vtnDatosJuridico.superclass.initComponent.apply(this,
						arguments);
			},
			onRender : function() {
				Ext.getCmp('tbDatosJuridicoCliente').setActiveTab(0);
				Clientes.vtnDatosJuridico.superclass.onRender.apply(this,
						arguments);
			}
		});

Clientes.vtnDatosNatural = Ext.extend(Ext.Window, {
			id : 'vtnDatosNaturalCliente',
			width : 550,
			height : 365,
			tipo : 'Agregar',
			title : 'Insertar Cliente Natural',
			url : '/cake/syscable/MgClientes/insertarExt',
			initComponent : function() {
				var config = {
					layout : 'border',
					closable : true,
					closeAction : 'close',
					plain : false,
					maximizable : false,
					resizable : false,
					frame : true,
					items : [{
								region : 'center',
								width : 200,
								layout : 'fit',
								frame : false,
								border : false,
								items : [{
											xtype : 'frmDatosNaturalCliente',
											id : 'frmDatosNaturalCliente',
											tipo : this.tipo,
											padre : this.id,
											url : this.url
										}]
							}]
				};
				Ext.apply(this, Ext.apply(this.initialConfig, config));
				Clientes.vtnDatosNatural.superclass.initComponent.apply(this,
						arguments);
			},
			onRender : function() {
				Ext.getCmp('tbDatosNaturalCliente').setActiveTab(0);
				Clientes.vtnDatosNatural.superclass.onRender.apply(this,
						arguments);
			}
		});

/*
 * Crea Ventana para escojer el tipo de cliente que desea escojer
 */

Clientes.frmTipo = Ext.extend(Ext.form.FormPanel, {
	width : 250,
	height : 150,
	id : 'frmTipoCliente',
	initComponent : function() {
		var config = {
			frame : false,
			bodyStyle : 'padding: 5px 5px 0',
			padre : 'vtnTipoCliente',
			trackResetOnLoad : true,
			labelWidth : 90,
			labelAlign : 'right',
			defaultType : 'textfield',
			buttons : [{
				text : 'Aceptar',
				scope : this,
				handler : function() {
					if (Ext.getCmp(Ext.getCmp(this.id).items.itemAt(0).id)
							.getValue().getGroupValue() == 'N') {
						var vtnDatosNaturalCliente = new Clientes.vtnDatosNatural(
								{
									id : 'vtnDatosNaturalCliente',
									tipo : 'Agregar',
									url : '/cake/syscable/MgClientes/insertarExt'
								});
						Ext.getCmp('vtnDatosNaturalCliente').show(this)
					} else {
						var vtnDatosJuridicoCliente = new Clientes.vtnDatosJuridico(
								{
									id : 'vtnDatosJuridicoCliente',
									tipo : 'Agregar',
									url : '/cake/syscable/MgClientes/insertarJuridicoExt'
								});
						Ext.getCmp('vtnDatosJuridicoCliente').show(this)
					}
					Ext.getCmp(this.padre).close();
				}
			}],
			items : [{
						xtype : 'radiogroup',
						fieldLabel : 'Tipo Cliente',
						id : 'rgTipoCliente',
						columns : [100, 100],
						vertical : true,
						items : [{
									boxLabel : 'Natural',
									name : 'tipo-cliente',
									inputValue : 'N',
									checked : true,
									id : 'tipoNatural'
								}, {
									boxLabel : 'Juridico',
									name : 'tipo-cliente',
									inputValue : 'J',
									id : 'tipojuridico'
								}]
					}]
		};
		Ext.apply(this, Ext.apply(this.initialConfig, config));
		Clientes.frmTipo.superclass.initComponent.apply(this, arguments);
	}
});
Ext.reg('frmTipoCliente', Clientes.frmTipo);

Clientes.vtnTipo = Ext.extend(Ext.Window, {
			id : 'ventanaTipoCliente',
			width : 250,
			height : 150,
			initComponent : function() {
				var config = {
					layout : 'border',
					closable : true,
					closeAction : 'close',
					plain : false,
					maximizable : false,
					resizable : false,
					modal : true,
					title : 'Tipo de Cliente a Agregar',
					frame : true,
					items : [{
								region : 'center',
								width : 200,
								layout : 'fit',
								frame : false,
								border : false,
								items : [{
											xtype : 'frmTipoCliente',
											id : 'frmTipoCliente',
											padre : this.id
										}]
							}]
				};
				Ext.apply(this, Ext.apply(this.initialConfig, config));
				Clientes.vtnTipo.superclass.initComponent
						.apply(this, arguments);
			}
		});

/*
 * Crea Ventana para el ingreso de contratos
 */

Clientes.cbxListado = Ext.extend(Ext.form.ComboBox, {
	width : 190,
	allowBlank : false,
	minChars : 2,
	fieldLabel : 'Cliente',
	valueNotFound : 123,
	displayField : 'id',
	valueField : 'id',
	typeAhead : true,
	tpl : new Ext.XTemplate('<tpl for="."><div class="x-combo-list-item">'
			+ '<b>{id}</b>--{primer_nombre} {primer_apellido}</div></tpl>'),
	mode : 'remote',
	loadingText : 'Buscando...',
	initComponent : function() {
		var config = {
			store : new Ext.data.Store({
				proxy : new Ext.data.HttpProxy({
							url : "/cake/syscable/TcContratos/combobox/2/MgCliente"
						}),
				reader : new Ext.data.JsonReader({
							id : 'id',
							root : 'datos',
							totalProperty : 'total',
							fields : [{
										name : 'id'
									}, {
										name : 'primer_nombre'
									}, {
										name : 'segundo_nombre'
									}, {
										name : 'primer_apellido'
									}, {
										name : 'segundo_apellido'
									}]
						})

			}),
			hiddenName : 'data[TcContrato][mg_cliente_id]',
			triggerAction : 'all',
			listEmptyText : 'No hay resultados',
			emptyText : 'Elija un cliente...',
			forceSelection : true,
			selectOnFocus : true,
			lazyRender : true,
			blankText : 'No puede estar vacio'
		};
		Ext.apply(this, Ext.apply(this.initialConfig, config));
		Clientes.cbxListado.superclass.initComponent.apply(this, arguments);
	},
	onRender : function() {
		this.store.load();
		Clientes.cbxListado.superclass.onRender.apply(this, arguments);
	}
});
Ext.reg('cbxListadoCliente', Clientes.cbxListado);
/*
 * var resultTpl = new Ext.XTemplate( '<tpl for="."><div
 * class="search-item">', '<h3><span>{lastPost:date("M j, Y")}<br />by
 * {author}</span>{title}</h3>', '{excerpt}', '</div></tpl>' );
 */

Colonias.cbxListado = Ext.extend(Ext.form.ComboBox, {
	width : 190,
	minChars : 2,
	initComponent : function() {
		var config = {
			typeAhead : true,
			store : new Ext.data.Store({
				proxy : new Ext.data.HttpProxy({
							url : "/cake/syscable/TcContratos/combobox/1/MgColonia"
						}),
				reader : new Ext.data.JsonReader({
							id : 'id',
							root : 'datos',
							totalProperty : 'total',
							fields : [{
										name : 'id'
									}, {
										name : 'descripcion'
									}]
						})

			}),
			mode : 'remote',
			displayField : 'descripcion',
			valueField : 'id',
			loadingText : 'Buscando...',
			fieldLabel : 'Colonia',
			hiddenName : 'data[TcContrato][mg_colonia_id]',
			triggerAction : 'all',
			allowBlank : false,
			emptyText : 'Escoja una colonia...',
			forceSelection : true,
			selectOnFocus : true,
			listEmptyText : 'No hay resultados',
			lazyRender : true
		};
		Ext.apply(this, Ext.apply(this.initialConfig, config));
		Colonias.cbxListado.superclass.initComponent.apply(this, arguments);
	},
	onRender : function() {
		this.store.load();
		Colonias.cbxListado.superclass.onRender.apply(this, arguments);
	}
});
Ext.reg('cbxListadoColonia', Colonias.cbxListado);

Contratos.tbDatos = Ext.extend(Ext.TabPanel, {
	tipo : 'Agregar',
	url : '/cake/syscable/TcContratos/insertarExt',
	padre : 'vtnDatosContrato',
	defaults : {
		autoHeight : true,
		bodyStyle : 'padding:10px',
		width : 400
	},
	initComponent : function() {
		var config = {
			layoutOnTabChange : true,
			buttonAlign : 'right',
			items : [{
				title : 'Datos Generales',
				layout : 'form',
				shadow : true,
				defaults : {
					width : 300
				},
				tabTip : 'Datos generales del contrato',
				items : [{
							xtype : 'textfield',
							id : 'tfIdContrato' + this.tipo,
							fieldLabel : 'Id. Contrato',
							hideLabel : true,
							name : 'data[TcContrato][id]',
							hidden : true

						}, {
							xtype : 'textfield',
							id : 'tfNoContrato' + this.tipo,
							fieldLabel : 'No. Contrato',
							name : 'data[TcContrato][contrato]', // field
							allowBlank : false,
							blankText : 'No puede estar vacio'
						}, {
							xtype : 'textfield',
							id : 'tfNoReciboContrato' + this.tipo,
							fieldLabel : 'No. Recibo',
							name : 'data[TcContrato][numero_contrato]',
							allowBlank : false,
							blankText : 'No puede estar vacio'
						}, {
							xtype : 'cbxListadoCliente',
							id : 'cbxListadoCliente'
						}, {
							xtype : 'textfield',
							fieldLabel : 'Descripcion',
							name : 'data[TcContrato][descripcion]',
							allowBlank : false,
							id : 'tfDescripcionContrato',
							blankText : 'No puede estar vacio'
						}, {
							xtype : 'numberfield',
							name : 'data[TcContrato][cantidad_televisores]', // field
							fieldLabel : 'No. TVs',
							id : 'nfCantidadTvContrato',
							value : 2,
							hidden : false,
							allowBlank : false,
							blankText : 'No puede estar vacio',
							minText : 'La cantidad minima de televisores es 2',
							maxText : 'La cantidad maxima de televisores es 20',
							// type: number,
							minValue : 2,
							maxValue : 20

						}, {
							xtype : 'textarea',
							fieldLabel : 'Comentarios',
							name : 'data[TcContrato][comentario]',
							id : 'taComentariosContrato' + this.tipo,
							height : 100
						}, {
							xtype : 'datefield',
							id : 'dfFechaInstalacionContrato' + this.tipo,
							fieldLabel : 'Fecha Instalacion',
							labelWidth : 110,
							name : 'data[TcContrato][fecha_instalacion]',
							width : 190,
							allowBlank : true,
							format : 'd-m-Y',
							todayText : 'Hoy'
						}, {
							xtype : 'textfield',
							name : 'data[TcContrato][tc_estado_contrato_id]',
							id : 'tfIdEstadoContrato' + this.tipo,
							hidden : true,
							value : 1
						}, {
							xtype : 'textfield',
							id : 'tfIdTipoContrato' + this.tipo,
							name : 'data[TcContrato][tc_tipo_contrato_id]',
							hidden : true,
							value : 1
						}],
				buttons : [{
							iconCls : 'icon-right',
							scale : 'large',
							width : 32,
							height : 32,
							cls : 'boton_align_right',
							scope : this,
							handler : function() {
								Ext.getCmp(this.id).setActiveTab(1);
							}
						}]
			}, {
				title : 'Direccion',
				layout : 'form',
				buttons : [{
							iconCls : 'icon-left',
							scale : 'large',
							width : 32,
							height : 32,
							cls : 'boton_align_left',
							scope : this,
							handler : function() {
								Ext.getCmp(this.id).setActiveTab(0);

							}
						}, {
							text : 'Guardar',
							type : 'submit',
							scope : this,
							handler : function() {
								Ext.getCmp('frmDatosContrato').form.submit({
									waitTitle : 'Guardando Datos',
									waitMsg : 'Porfavor Espere',
									url : this.url,
									scope : this,
									success : function(form, action) {
										Ext.Msg.show({
											title : 'Mensaje',
											msg : 'Contrato Guardado Exitosamente!',
											buttons : Ext.Msg.OK,
											scope : this,
											fn : function() {
												Ext.getCmp(this.padre).close();
												if (this.tipo == 'Agregar') {
													var vtnReajusteMovimientoContrato = new Movimientos.vtnReajuste(
															{
																id : 'vtnReajusteMovimientoContrato'
															});
													Ext
															.getCmp('tfIdContratoReajuste')
															.setValue(action.result.contrato)
													Ext
															.getCmp('vtnReajusteMovimientoContrato')
															.show();
												}
												if (this.tipo == 'Editar') {
													Ext
															.getCmp('grdPrincipalContrato').store
															.load();
												}

											}
										});
									},
									failure : function() {
										Ext.MessageBox.alert('Mensaje',
												'Error al Guardar!');
									}
								});
							}
						}, {
							text : 'Cancelar',
							scope : this,
							handler : function() {
								Ext.getCmp(this.padre).close();
							}
						}],
				defaults : {
					width : 300
				},
				items : [{
							fieldLabel : 'Telefono',
							name : 'data[TcContrato][telefono]',
							allowBlank : false,
							blankText : 'No puede estar vacio',
							xtype : 'textfield',
							id : 'tfTelefonoContrato' + this.tipo
						}, {
							xtype : 'cbxListadoColonia',
							id : 'cbxListadoColonia'
						}, {
							fieldLabel : 'Casa',
							name : 'data[TcContrato][casa]',
							allowBlank : true,
							blankText : 'No puede estar vacio',
							xtype : 'textfield',
							id : 'tfCasaContrato' + this.tipo
						}, {
							fieldLabel : 'Bloque',
							name : 'data[TcContrato][bloque]',
							allowBlank : true,
							blankText : 'No puede estar vacio',
							xtype : 'textfield',
							id : 'tfBloqueContrato' + this.tipo
						}, {
							fieldLabel : 'Calle',
							name : 'data[TcContrato][calle]',
							allowBlank : true,
							blankText : 'No puede estar vacio',
							xtype : 'textfield',
							id : 'tfCalleContrato' + this.tipo
						}, {
							fieldLabel : 'Descripcion Direccion',
							name : 'data[TcContrato][descripcion_direccion]',
							allowBlank : false,
							blankText : 'No puede estar vacio',
							height : 100,
							xtype : 'textarea',
							id : 'taDescripcionDireccionContrato' + this.tipo
						}]
			}]
		};
		Ext.apply(this, Ext.apply(this.initialConfig, config));
		Contratos.tbDatos.superclass.initComponent.apply(this, arguments);
	}
});
Ext.reg('tbDatosContrato', Contratos.tbDatos);

Contratos.frmDatos = Ext.extend(Ext.form.FormPanel, {
			frame : false,
			bodyStyle : 'padding: 5px 5px 0',
			width : 550,
			labelWidth : 90,
			labelAlign : 'right',
			defaultType : 'textfield',
			tipo : 'Agregar',
			padre : 'vtnDatosContrato',
			url : '/cake/syscable/TcContratos/insertarExt',
			initComponent : function() {
				var config = {
					trackResetOnLoad : true,
					items : [{
								xtype : 'tbDatosContrato',
								id : 'tbDatosContrato',
								tipo : this.tipo,
								padre : this.padre,
								url : this.url
							}]
				};
				Ext.apply(this, Ext.apply(this.initialConfig, config));
				Contratos.frmDatos.superclass.initComponent.apply(this,
						arguments);
			}
		});
Ext.reg('frmDatosContrato', Contratos.frmDatos);

Movimientos.frmReajuste = Ext.extend(Ext.form.FormPanel, {
	frame : false,
	bodyStyle : 'padding: 5px 5px 0',
	width : 450,
	plain : false,
	trackResetOnLoad : true,
	labelWidth : 90,
	labelAlign : 'right',
	defaultType : 'textfield',
	grid : 'grdPrincipalContrato',
	padre : 'vtnReajusteMovimientoContrato',
	initComponent : function() {
		var config = {
			items : [{
						xtype : 'textfield',
						id : 'tfIdContratoReajuste',
						fieldLabel : 'Contrato',
						name : 'data[TcMovimientosDiario][contrato]',
						hidden : false,
						readOnly : true,
						width : 300,
						allowBlank : false
					}, {
						xtype : 'datefield',
						id : 'dfFechaReferenciaReajuste',
						fieldLabel : 'Fecha Pago',
						labelWidth : 110,
						name : 'data[TcMovimientosDiario][fecha_referencia]',
						width : 190,
						allowBlank : false,
						format : 'd-m-Y',
						todayText : 'Hoy'
					}, {
						xtype : 'numberfield',
						name : 'data[TcMovimientosDiario][valor_pagadox]', // field
						fieldLabel : 'Reajuste', // label text
						hidden : false,
						allowBlank : false,
						blankText : 'No puede estar vacio',
						id : 'nfValorPagadoReajuste'
					}],
			buttons : [{
				text : 'Pagar',
				type : 'submit',
				scope : this,
				id : 'btnAceptarReajusteMovimiento',
				handler : function() {
					Ext.getCmp(this.id).form.submit({
								waitTitle : 'Realizando Pago',
								waitMsg : 'Porfavor Espere',
								url : '/cake/syscable/TcMovimientosDiarios/ingresoExt',
								scope : this,
								success : function() {
									Ext.Msg.show({
												title : 'Mensaje',
												msg : 'Pago Realizado Exitosamente!',
												scope : this,
												buttons : Ext.Msg.OK,
												fn : function() {
													Ext.getCmp(this.padre)
															.close();
													Ext.getCmp(this.grid).store
															.load();
												}
											})

								},
								failure : function() {
									Ext.MessageBox.alert('Mensaje',
											'Error al Guardar!');
								}
							});
				}
			}, {
				text : 'Cancelar',
				id : 'btnCancelarReajusteMovimiento',
				handler : function() {
					Ext.getCmp(this.padre).close();
				}
			}]
		};
		Ext.apply(this, Ext.apply(this.initialConfig, config));
		Movimientos.frmReajuste.superclass.initComponent.apply(this);
	}
});
Ext.reg('frmReajusteMovimiento', Movimientos.frmReajuste);

/*
 * 
 * Crea ventana para reajuste
 */

var meses_pagado = new Ext.form.NumberField({
			hidden : true,
			name : 'data[TcMovimientosDiario][meses_pagados]',
			allowBlank : false,
			blankText : 'No puede estar vacio',
			value : 1
		});
Contratos.vtnDatos = Ext.extend(Ext.Window, {
			id : 'vtnContrato',
			layout : 'border',
			closable : true,
			closeAction : 'close',
			width : 550,
			height : 380,
			plain : false,
			maximizable : false,
			resizable : false,
			modal : true,
			title : 'Insertar Contrato',
			frame : true,
			tipo : 'Agregar',
			url : '/cake/syscable/TcContratos/insertExt',
			initComponent : function() {
				var config = {
					items : [{
								region : 'center',
								width : 200,
								layout : 'fit',
								frame : false,
								border : false,
								items : [{
											xtype : 'frmDatosContrato',
											id : 'frmDatosContrato',
											tipo : this.tipo,
											padre : this.id,
											url : this.url
										}]
							}]
				};
				Ext.apply(this, Ext.apply(this.initialConfig, config));
				Contratos.vtnDatos.superclass.initComponent.apply(this,
						arguments);
			},
			onRender : function() {
				Ext.getCmp('tbDatosContrato').setActiveTab(0);
				Contratos.vtnDatos.superclass.onRender.apply(this, arguments);
			}
		});

Movimientos.vtnReajuste = Ext.extend(Ext.Window, {
	id : 'vtnReajusteMovimientoContrato',
	closable : true,
	closeAction : 'close',
	width : 460,
	height : 160,
	plain : false,
	maximizable : false,
	resizable : false,
	modal : true,
	initComponent : function() {
		var config = {
			title : 'Pago de Reajuste',
			frame : true,
			items : [{
						region : 'center',
						width : 450,
						layout : 'fit',
						frame : true,
						border : true,
						items : [{
									xtype : 'frmReajusteMovimiento',
									id : 'frmReajusteMovimientosContrato',
									padre : this.id

								}]
					}]
		};
		Ext.apply(this, Ext.apply(this.initialConfig, config));
		Movimientos.vtnReajuste.superclass.initComponent.apply(this, arguments);
	}

});
